package com.leon.ikun.beans.home

import com.google.gson.annotations.SerializedName
import android.os.Parcelable
import kotlinx.parcelize.Parcelize

@Parcelize
data class HomeRecommendApp(
    @SerializedName("code")
    val code: Int,
    @SerializedName("data")
    val `data`: Data,
    @SerializedName("message")
    val message: String,
    @SerializedName("ttl")
    val ttl: Int,
    @SerializedName("total")
    val total: Int,
    @SerializedName("list")
    val list: List<VodInfo>,
    @SerializedName("class")
    val classList: List<ClassInfo>
) : Parcelable {
    @Parcelize
    data class VodInfo(
        @SerializedName("vod_id") val vodId: String,
        @SerializedName("type_id") val typeId: Int,
        @SerializedName("type_id_1") val typeId1: Int,
        @SerializedName("group_id") val groupId: Int,
        @SerializedName("vod_name") val vodName: String,
        @SerializedName("vod_sub") val vodSub: String,
        @SerializedName("vod_en") val vodEn: String,
        @SerializedName("vod_status") val vodStatus: Int,
        @SerializedName("vod_letter") val vodLetter: String,
        @SerializedName("vod_color") val vodColor: String,
        @SerializedName("vod_tag") val vodTag: String,
        @SerializedName("vod_class") val vodClass: String,
        @SerializedName("vod_pic") val vodPic: String,
        @SerializedName("vod_pic_thumb") val vodPicThumb: String,
        @SerializedName("vod_pic_slide") val vodPicSlide: String,
        @SerializedName("vod_pic_screenshot") val vodPicScreenshot: String?,
        @SerializedName("vod_actor") val vodActor: String,
        @SerializedName("vod_director") val vodDirector: String,
        @SerializedName("vod_writer") val vodWriter: String,
        @SerializedName("vod_behind") val vodBehind: String,
        @SerializedName("vod_blurb") val vodBlurb: String,
        @SerializedName("vod_remarks") val vodRemarks: String,
        @SerializedName("vod_pubdate") val vodPubdate: String,
        @SerializedName("vod_total") val vodTotal: Int,
        @SerializedName("vod_serial") val vodSerial: String,
        @SerializedName("vod_tv") val vodTv: String,
        @SerializedName("vod_weekday") val vodWeekday: String,
        @SerializedName("vod_area") val vodArea: String,
        @SerializedName("vod_lang") val vodLang: String,
        @SerializedName("vod_year") val vodYear: String,
        @SerializedName("vod_version") val vodVersion: String,
        @SerializedName("vod_state") val vodState: String,
        @SerializedName("vod_author") val vodAuthor: String,
        @SerializedName("vod_jumpurl") val vodJumpurl: String,
        @SerializedName("vod_tpl") val vodTpl: String,
        @SerializedName("vod_tpl_play") val vodTplPlay: String,
        @SerializedName("vod_tpl_down") val vodTplDown: String,
        @SerializedName("vod_isend") val vodIsend: Int,
        @SerializedName("vod_lock") val vodLock: Int,
        @SerializedName("vod_level") val vodLevel: Int,
        @SerializedName("vod_copyright") val vodCopyright: Int,
        @SerializedName("vod_points") val vodPoints: Int,
        @SerializedName("vod_points_play") val vodPointsPlay: Int,
        @SerializedName("vod_points_down") val vodPointsDown: Int,
        @SerializedName("vod_hits") val vodHits: Int,
        @SerializedName("vod_hits_day") val vodHitsDay: Int,
        @SerializedName("vod_hits_week") val vodHitsWeek: Int,
        @SerializedName("vod_hits_month") val vodHitsMonth: Int,
        @SerializedName("vod_duration") val vodDuration: String,
        @SerializedName("vod_up") val vodUp: Int,
        @SerializedName("vod_down") val vodDown: Int,
        @SerializedName("vod_score") val vodScore: String,
        @SerializedName("vod_score_all") val vodScoreAll: Int,
        @SerializedName("vod_score_num") val vodScoreNum: Int,
        @SerializedName("vod_time") val vodTime: String,
        @SerializedName("vod_time_add") val vodTimeAdd: Int,
        @SerializedName("vod_time_hits") val vodTimeHits: Int,
        @SerializedName("vod_time_make") val vodTimeMake: Int,
        @SerializedName("vod_trysee") val vodTrysee: Int,
        @SerializedName("vod_douban_id") val vodDoubanId: Int,
        @SerializedName("vod_douban_score") val vodDoubanScore: String,
        @SerializedName("vod_reurl") val vodReurl: String,
        @SerializedName("vod_rel_vod") val vodRelVod: String,
        @SerializedName("vod_rel_art") val vodRelArt: String,
        @SerializedName("vod_pwd") val vodPwd: String,
        @SerializedName("vod_pwd_url") val vodPwdUrl: String,
        @SerializedName("vod_pwd_play") val vodPwdPlay: String,
        @SerializedName("vod_pwd_play_url") val vodPwdPlayUrl: String,
        @SerializedName("vod_pwd_down") val vodPwdDown: String,
        @SerializedName("vod_pwd_down_url") val vodPwdDownUrl: String,
        @SerializedName("vod_content") val vodContent: String,
        @SerializedName("vod_play_from") val vodPlayFrom: String,
        @SerializedName("vod_play_server") val vodPlayServer: String,
        @SerializedName("vod_play_note") val vodPlayNote: String,
        @SerializedName("vod_play_url") val vodPlayUrl: String,
        @SerializedName("vod_down_from") val vodDownFrom: String,
        @SerializedName("vod_down_server") val vodDownServer: String,
        @SerializedName("vod_down_note") val vodDownNote: String,
        @SerializedName("vod_down_url") val vodDownUrl: String,
        @SerializedName("vod_plot") val vodPlot: Int,
        @SerializedName("vod_plot_name") val vodPlotName: String,
        @SerializedName("vod_plot_detail") val vodPlotDetail: String,
        @SerializedName("type_name") val typeName: String
    ) : Parcelable

    /**
     *   "type_id": 1,
     *             "type_pid": 0,
     *             "type_name": "电视剧"
     */
    @Parcelize
    data class ClassInfo(
        @SerializedName("type_id") val id: Int,
        @SerializedName("type_pid") val pid: Int,
        @SerializedName("type_name") val name: String,
    ) : Parcelable


    @Parcelize
    data class Data(
        @SerializedName("config")
        val config: Config,
        @SerializedName("items")
        val items: List<Item>
    ) : Parcelable {
        @Parcelize
        data class Config(
            @SerializedName("auto_refresh_time")
            val autoRefreshTime: Int,
            @SerializedName("auto_refresh_time_by_active")
            val autoRefreshTimeByActive: Int,
            @SerializedName("auto_refresh_time_by_appear")
            val autoRefreshTimeByAppear: Int,
            @SerializedName("autoplay_card")
            val autoplayCard: Int,
            @SerializedName("card_density_exp")
            val cardDensityExp: Int,
            @SerializedName("column")
            val column: Int,
            @SerializedName("enable_rcmd_guide")
            val enableRcmdGuide: Boolean,
            @SerializedName("feed_clean_abtest")
            val feedCleanAbtest: Int,
            @SerializedName("home_transfer_test")
            val homeTransferTest: Int,
            @SerializedName("inline_sound")
            val inlineSound: Int,
            @SerializedName("is_back_to_homepage")
            val isBackToHomepage: Boolean,
            @SerializedName("show_inline_danmaku")
            val showInlineDanmaku: Int,
            @SerializedName("toast")
            val toast: Toast,
            @SerializedName("visible_area")
            val visibleArea: Int
        ) : Parcelable {
            @Parcelize
            class Toast : Parcelable
        }

        @Parcelize
        data class Item(
            @SerializedName("args")
            val args: Args,
            @SerializedName("can_play")
            val canPlay: Int,
            @SerializedName("card_goto")
            val cardGoto: String,
            @SerializedName("card_type")
            val cardType: String,
            @SerializedName("cover")
            val cover: String,
            @SerializedName("cover_left_1_content_description")
            val coverLeft1ContentDescription: String,
            @SerializedName("cover_left_2_content_description")
            val coverLeft2ContentDescription: String,
            @SerializedName("cover_left_icon_1")
            val coverLeftIcon1: Int,
            @SerializedName("cover_left_icon_2")
            val coverLeftIcon2: Int,
            @SerializedName("cover_left_text_1")
            val coverLeftText1: String,
            @SerializedName("cover_left_text_2")
            val coverLeftText2: String,
            @SerializedName("cover_right_content_description")
            val coverRightContentDescription: String,
            @SerializedName("cover_right_text")
            val coverRightText: String,
            @SerializedName("desc_button")
            val descButton: DescButton,
            @SerializedName("goto")
            val goto: String,
            @SerializedName("idx")
            val idx: Int,
            @SerializedName("official_icon")
            val officialIcon: Int?,
            @SerializedName("param")
            val `param`: String,
            @SerializedName("player_args")
            val playerArgs: PlayerArgs,
            @SerializedName("talk_back")
            val talkBack: String,
            @SerializedName("title")
            val title: String,
            @SerializedName("uri")
            val uri: String
        ) : Parcelable {
            @Parcelize
            data class Args(
                @SerializedName("aid")
                val aid: Int,
                @SerializedName("rid")
                val rid: Int,
                @SerializedName("rname")
                val rname: String,
                @SerializedName("tid")
                val tid: Int,
                @SerializedName("tname")
                val tname: String,
                @SerializedName("up_id")
                val upId: String,
                @SerializedName("up_name")
                val upName: String
            ) : Parcelable

            @Parcelize
            data class DescButton(
                @SerializedName("event")
                val event: String,
                @SerializedName("event_v2")
                val eventV2: String,
                @SerializedName("text")
                val text: String,
                @SerializedName("type")
                val type: Int,
                @SerializedName("uri")
                val uri: String
            ) : Parcelable

            @Parcelize
            data class PlayerArgs(
                @SerializedName("aid")
                val aid: Int,
                @SerializedName("cid")
                val cid: Int,
                @SerializedName("duration")
                val duration: Int,
                @SerializedName("type")
                val type: String
            ) : Parcelable
        }
    }


}